Mˆjhma 2 H mèjodoc Sturm Το θεώρημα του Sturm μας δίνει έναν τρόπο καταμέτρησης των πραγματικών ριζών ενός πολυωνύμου σε δοσμένο διάστημα που τηρεί κάποιες συνθήκες. Εισάγουμε την έννοια της ακολουθίας Sturm ενός πολυωνύμου, αποδεικνύουμε το σχετικό θεώρημα και κατόπιν δίνουμε αλγόριθμο εντοπισμού των πραγματικών ριζών. 2.1 AkoloujÐec Sturm Εστω μια ακολουθία τιμών (t 1,..., t k ). Ορίζουμε ως το πλήθος μεταβολών προσήμου το πλήθος μεταβολών στην ακολουθία μη-μηδενικών προσήμων. Π.χ. πλήθος μεταβολών της [, +, +, ] = 2, πλήθος μεταβολών της [+, 0, +, ] = 1. Εστω a R {, + } και μια ακολουθία πολυωνύμων (p 1,..., p k ). Ορίζουμε ως το πλήθος μεταβολών προσήμου της ακολουθίας στο σημείο a, και το συμβολίζουμε V (a), το πλήθος μεταβολών προσήμου στην ακολουθία των τιμών [p 1 (a),..., p k (a)], όπου p(± ) = lim x ± p(x). Ορισμός 2.1.1. Μια ακολουθία Sturm ενός πολυωνύμου p K[x] στο [a, b] K {, + }, όπου K κλειστό πραγματικό, είναι μια ακολουθία (p 1, p 2,..., p k ) με p 1 = p εάν: 1. p(a)p(b) 0, 2. c [a, b], p k (c) 0, 3. c [a, b] : p j (c) = 0 p j 1 (c)p j+1 (c) < 0, j {2,..., k 1} 4. c [a, b] : p 1 (c) = 0 υπάρχουν διαστήματα [c 1, c), (c, c 2 ] τέτοια ώστε: u 1 [c 1, c) p 1 (u 1 )p 2 (u 1 ) < 0 και u 2 (c, c 2 ] p 1 (u 2 )p 2 (u 2 ) > 0. Το επόμενο θεώρημα δείχνει πως ο παραπάνω ορισμός δεν είναι κενός, δηλ. υπάρχει τουλάχιστον μια ακολουθία Sturm. Το θεώρημα ορίζει έτσι την απλή ακολουθία Sturm. Θεώρημα 2.1.1 ( Υπαρξη ακολουθίας Sturm). Εστω μια ακολουθία (p 1, p 2,..., p k ) με p 1 = p K[x] ένα πολυώνυμο χωρίς τετράγωνα και K κλειστό πραγματικό, p 2 = p (παράγωγος) και για i = 3,..., k, p i = (p i 2 mod p i 1 ). Η ακολουθία (p i ) είναι ακολουθία Sturm σε διάστημα [a, b] όπου p(a)p(b) 0 και καλείται απλή ακολουθία Sturm. Απόδειξη. (1) Κατ επιλογή τα a, b δεν είναι ρίζες του p. (2) ΜΚΔ(p, p ) = μη μηδενική σταθερά διότι το p δεν έχει τετράγωνα. Το p k είναι πολλαπλάσιο του ΜΚΔ(p, p ) επί μια μη μηδενική σταθερά άρα p k = σταθερά. Εδώ χρησιμοποιείται η υπόθεση πως το πολυώνυμο είναι χωρίς τετράγωνα. (3) q i K[x] : p i 1 = p i q i p i+1 p i 1 (c) = 0 p i+1 (c). Εάν p i 1 (c) = 0 = p i+1 (c) τότε j > i 2, p j (c) = 0: άτοπο για j = k. (4) Για c τέτοιο ώστε p(c) = 0 έχουμε p (c) 0 (διότι p χωρίς τετράγωνα) άρα υπάρχει διάστημα (c 1, c 2 ) που περιέχει το c όπου το p έχει σταθερό πρόσημο ενώ το p αλλάζει πρόσημο στο c, δεδομένου ότι πρόκειται για απλή ρίζα. Πόρισμα 2.1.1. Κάθε ακολουθία (p i ) = (p, p,... ) όπου a i p i = b i p i 2 + p i 1 q i+1 για a i, b i K, a i b i < 0, όπου το p(x) K[x] είναι χωρίς τετράγωνα και το K κλειστό πραγματικό, είναι ακολουθία Sturm στο [a, b] όπου p(a)p(b) 0. Απόδειξη. Οπως παραπάνω: άσκηση. Λήμμα 2.1.1. Μία ακολουθία προσήμων (σ, τ, σ) έχει 1 αλλαγή προσήμου για κάθε σ, τ {+, }. 5
6 Υπολογιστική Άλγεβρα 2.2 To Je rhma Sturm Είμαστε τώρα έτοιμοι να διατυπώσουμε το βασικό θεώρημα της ενότητας, που θα μας επιτρέψει να μετράμε τις διαφορετικές πραγματικές ρίζες ενός πολυωνύμου σε ένα διάστημα, χωρίς όμως να υπολογίζουμε τις πολλαπλότητές τους. Θεώρημα 2.2.1 (Sturm). Εστω μια ακολουθία Sturm (p i ) = (p 1,..., p k ) στο [a, b] K {, + }, όπου p = p 1 K[x] και K κλειστό πραγματικό. Το πλήθος των διαφορετικών πραγματικών ριζών του p 1 (x) στο [a, b] ισούται με V (a) V (b), όπου V ( ) το πλήθος μεταβολών προσήμου της (p i ). Απόδειξη. Εστω a 1 < < a m οι ρίζες (a, b) ΟΛΩΝ των πολυωνύμων στην (p i ), δηλαδή όλες οι τιμές στο διάστημα στις οποίες κάποιο πολυώνυμο της ακολουθίας μηδενίζεται. Θα αποδείξουμε επαγωγικά πως η διαφορά V (a) V (c i ) ισούται με το πλήθος των πραγματικών ριζών στο (a, c i ) για τυχαίο c i (a i, a i+1 ), i = 0,..., m, όπου a 0 = a, a m+1 = b. Βάση της επαγωγής: Εστω c 0 (a 0, a 1 ). Αν p i (a 0 ) 0, i = 2,..., k 1 τότε προφανώς από το θεώρημα μέσης τιμής του Bolzano σε ένα διάστημα (a 0 ε, c 0 ), για κάποιο ε > 0, κάθε πολυώνυμο διατηρεί το πρόσημό του, δηλαδή V (a) = V (c 0 ) V (a) V (c 0 ) = 0. Ακόμη κι αν υπάρχει i {2,..., k 1} με p i (a) = 0, η ιδιότητα (3) της ακολουθίας Sturm δίνει p i 1 (a)p i+1 (a) < 0, άρα η τριάδα συνεισφέρει στο V (a) κατά 1, επειδή η ακολουθία προσήμων είναι της μορφής [, σ, 0, σ, ], σ, τ {+, } στις θέσεις i 1, i, i + 1. Καθώς στο διάστημα (a, c 0 ) δεν υπάρχουν ρίζες, η ακολουθία προσήμων στο c 0 είναι της μορφής [, σ, τ, σ, ] στις ίδιες θέσεις, άρα σύμφωνα με το Λήμμα 2.1.1 συνεισφέρει στο V (c 0 ) κατά 1. Αν υπάρχει κι άλλος τέτοιος δείκτης i, με το ίδιο επιχείρημα φθάνουμε στην ίδια μεταβολή των αλλαγών προσήμου, άρα τελικά V (a) V (c 0 ) = 0. Επαγωγικό βήμα: Υποθέτοντας V (a) V (c i ) =πλήθος ριζών (a, c i ) θα το αποδείξουμε για c i+1 όπου c i < a i+1 < c i+1 < a i+2. Διακρίνουμε δυο περιπτώσεις ανάλογα με το αν p(a i+1 ) 0 ή p(a i+1 ) = 0: 1. Εστω p(a i+1 ) 0. Τότε p j (a i+1 ) = 0, για κάποιο j {2,..., k 1}. Χάριν της ιδιότητας (3) των ακολουθιών Sturm, p j+1 (a i+1 )p j 1 (a i+1 ) < 0, συνεπώς έχουμε τις ακολουθίες προσήμων [p j 1 (c i ), p j (c i ), p j+1 (c i )] = [σ, τ 0, σ], [p j 1 (c i+1 ), p j (c i+1 ), p j+1 (c i+1 )] = [σ, τ 1, σ] για σ, τ 0, τ 1 {+, }. Σύμφωνα με το Λήμμα 2.1.1, υπάρχει ακριβώς μία αλλαγή προσήμου σε καθεμιά από τις 2 ακολουθίες. Άρα, αν μόνο το p j μηδενίζεται στο a i+1, έχουμε V (c i+1 ) = V (c i ). Αν υπάρχει κι άλλο πολυώνυμο που μηδενίζεται στο a i+1 το ίδιο επιχείρημα δείχνει πως τελικά V (c i+1 ) = V (c i ). Αφού οι ρίζες του p δεν αυξήθηκαν στο διάστημα (c i, c i+1 ), ο ισχυρισμός αποδείχθηκε. 2. Εστω p(a i+1 ) = 0. Χάριν της ιδιότητας (4) των ακολουθιών Sturm, τα p 1, p 2 έχουν διαφορετικό πρόσημο στο c i και το ίδιο στο c i+1. Επίσης, από την ιδιότητα (3) για j = 2, έχουμε p 2 (a i+1 ) = 0 p 1 (a i+1 ) 0, το οποίο είναι άτοπο. Άρα από θ.bolzano το p 2 διατηρεί το πρόσημό του στο (a i, a i+2 ), δηλαδή οι ακολουθίες προσήμων στα c i και c i+1 είναι: όπου ρ {+, }. [p 1 (c i ), p 2 (c i ),... ] = [ ρ, ρ, ], [p 1 (c i+1 ), p 2 (c i+1 ),... ] = [ρ, ρ, ] Αν κανένα άλλο πολυώνυμο με δείκτη j > 2 δε μηδενίζεται στο a i+1 βλέπουμε ότι V (c i+1 ) = V (c i ) 1. Αν τώρα για j > 2, υπάρχει p j με p j (a i+1 ) = 0 ακολουθούμε ακριβώς την ίδια διαδικασία όπως στην περίπτωση 1 πιο πάνω, για να δείξουμε ότι για την υπακολουθία [p 2, p 3,..., p k ] είναι V (c i+1 ) = V (c i ), δηλαδή ισχύει και πάλι V (c i+1 ) = V (c i ) 1. Τελικά βλέπουμε ότι V (a) V (c i+1 ) = V (a) V (c i ) + 1 άρα από επαγωγική υπόθεση φθάνουμε στο ζητούμενο(δεδομένου ότι οι ρίζες του p έχουν αυξηθεί κατά μία στο διάστημα (c i, c i+1 )). Άσκηση 2.2.1. Η έννοια της ακολουθίας Sturm γενικεύεται με το να αναιρέσουμε την προϋπόθεση (1) του ορισμού 2.1.1. Τότε τα διαστήματα στην προϋπόθεση (4) πρέπει να ανήκουν στο διάστημα [a, b], δηλ. η προϋπόθεση (4) απλοποιείται στην περίπτωση που c = a ή c = b. Αποδείξτε πως το θεώρημα 2.2.1 ισχύει.
Μάθημα 2. Η μέθοδος Sturm 7 Στόχος είναι η απομόνωση όλων των ριζών δηλ. ο υπολογισμός ρητών διαστημάτων που καθένα περιέχει μια μοναδική ρίζα. Περιορίζουμε το διάστημα όπου βρίσκονται οι (πραγματικές) ρίζες του p(x) χρησιμοποιώντας το θεώρημα 1.4.1 και το πόρισμά του. Παράδειγμα 2.2.1. Δίνεται p = x 3 + 2x 3 = (x 1)(x + 1/2 + i 11/2)(x + 1/2 i 11/2). Ακολουθία Sturm: p 1 = p, p 2 = p = 3x 2 + 2, p 3 = (p 1 mod p 2 ) = (4/3)x + 3, p 4 = (p 2 mod p 3 ) = 275/16. Στο παράδειγμα 1.4.1 υπολογίστηκε το αρχικό διάστημα (0.7211, 2.45), το οποίο περιέχει όλες τις ρίζες του p. Προκύπτει λοιπόν ο παρακάτω πίνακας, όπου μετά το αρχικό διάστημα (0, 3) επελέγησαν τα σημεία 3/2, 3/4, 9/8 με αυτή τη σειρά. a = 0 3/4 1 9/8 3/2 3 p 1 (a) 0 + + + p 2 (a) + + + + + + p 3 (a) + + + + + p 4 (a) V (a) = 2 2 1 1 1 1 Άσκηση 2.2.2. Εστω πολυώνυμο f = x 3 13x+12. Δίνεται η ταυτότητα f (x = 18/13) = 1225/169. Υπολογίστε μια ακολουθία Sturm και απομονώστε τις ρίζες. Απάντηση: p 1 = f, p 2 = f = 3x 2 13, p 3 = 26x/3 12, p 4 > 0. Ρίζες = 1, 3, 4. 2.3 O algìrijmoc Sturm Δίνουμε τώρα τον αλγόριθμο Sturm για εύρεση πραγματικών ριζών ενός πολυωνύμου με απλές ρίζες σε ψευδοκώδικα: Αλγόριθμος Sturm Είσοδος: Ενα πολυώνυμο p R[x] χωρίς τετράγωνα. Εξοδος: Ενα σύνολο R με στοιχεία διαστήματα απομόνωσης των πραγματικών ριζών του p. 1 I 0 Cauchy(p) 2 Υπολόγισε ακολουθία Sturm S = (p 1,..., p k ) στο I 0 3 Q {I 0 }, R 4 όσο Q 5 I εξαγωγή(q) 6 roots Vars(S, a) Vars(S, b) 7 αν roots = 1, R R I 8 αν roots > 1, Q Q {I L, I R } 9 επέστρεψε R Οπου I = [a, b], και συμβολίζουμε I L = [a, a+b 2 ], I R = [ a+b 2, b]. Τα σύνολα Q, R μπορούν να υλοποιηθούν με κάποια δομή δεδομένων, πχ στοίβα ή ουρά. Η εντολή Cauchy(p) επιστρέφει το διάστημα I 0 = [ B, B], όπου B το φράγμα ριζών του p από τον τύπο του Cauchy. Ο παραπάνω αλγόριθμος δεν λαμβάνει υπόψιν την περίπτωση κάποιο από τα άκρα των I L, I R να είναι ρίζα του p(x), όμως ένας τέτοιος έλεγχος είναι εύκολο να προστεθεί και δεν επιβαρύνει σημαντικά τον αλγόριθμο. Δίνεται και η ρουτίνα Vars(S, r), η οποία εκτελεί την αποτίμηση της ακολουθίας Sturm σε δοσμένη τιμή και μετρά τις εναλλαγές προσήμων στην ακολουθία που προκύπτει: Αλγόριθμος Vars Είσοδος: Μια ακολουθία πολυωνύμων S = (p 1, p 2,..., p k ) και μια τιμή r Q Εξοδος: Το πλήθος των αλλαγών προσήμου της S(r) = (p 1 (r), p 2 (r),..., p k (r)) 1 V 0 2 σ πρόσημο(p 1 (r)) 3 για i = 2 μέχρι k 4 τ πρόσημο(p i (r)) 5 αν στ = 1, V V + 1 6 αν τ 0, σ τ 7 επέστρεψε V
8 Υπολογιστική Άλγεβρα Οπου η εντολή πρόσημο() επιστρέφει 1 αν το όρισμα είναι θετικό, -1 αν είναι αρνητικό, ή 0 αν το όρισμα είναι το 0. d Προχωράμε στην ανάλυση του αλγορίθμου. Εστω d ο βαθμός του p, p(x) = c i x i, κι έστω ότι οι συντελεστές του έχουν μήκος O B (τ). Για την ώρα θα δεχθούμε ότι το βήμα 2 στον αλγόριθμο Sturm, δηλαδή ο υπολογισμός μιας ακολουθίας Sturm 1, έχει πολυπλοκότητα OB (d3 τ) και ότι οι συντελεστές κάθε πολυωνύμου p i έχουν μήκος O B (dτ). Επειδή B = 1 + max c i 0 i d c d, το B έχει μήκος O B(τ), δηλαδή B = 2 τ. Οι υποδιαιρέσεις(διχοτομήσεις) διαστημάτων που γίνονται δημιουργούν ένα νοητό δυαδικό δέντρο, με φύλλα τα διαστήματα απομόνωσης των ριζών του p, τα οποία συμβολίζονται στο παρακάτω παράδειγμα με I. Ι 0 i=0 Ι L Ι R Ι LL Ι LR Ι LLL Ι LLLR Στο δέντρο αυτό κάθε κόμβος-διάστημα χαρακτηρίζεται από το ύψος h(i) στο οποίο βρίσκεται, και μάλιστα είναι h(i) = lg I 0 I όπου με I συμβολίζουμε το μήκος του διαστήματος. Η σχέση προκύπτει άμεσα αν σκεφτούμε πως σε κάθε επίπεδο το μήκος υποδιπλασιάζεται, κι έτσι είναι I = 2 h(i) I 0. Οταν χρησιμοποιούμε κατάλληλη ακολουθία Sturm, η αποτίμησή της σε έναν ρητό με μήκος 2 O B (σ) έχει πολυπλοκότητα O B (d2 (τ + σ)). Αυτή είναι και η πολυπλοκότητα της ρουτίνας Vars όταν η είσοδος είναι O B (σ), καθώς οι υπόλοιπες πράξεις μεταξύ προσήμων είναι αμελητέες. Τι μήκος έχουν όμως οι ρητοί στους οποίους εφαρμόζουμε τη ρουτίνα; Οπως φαίνεται και στο παραπάνω δέντρο, σε βάθος h h(i) τα άκρα του διαστήματος I προκύπτουν με h διαδοχικές διαιρέσεις με το 2 ποσοτήτων ανάλογων των άκρων του I 0, άρα θα έχουν μήκος O B (τ + h). Ετσι τελικά η Vars τρέχει σε χρόνο O B (d2 (τ + h)). Για να βρούμε τη συνολική πολυπλοκότητα του αλγορίθμου πρέπει να εκτιμήσουμε πόσες φορές θα εκτελεστεί η επανάληψη στα βήματα 4-8, το οποίο είναι ανάλογο του αριθμού των υποδιαιρέσεων που θα γίνουν στο διάστημα I(βήμα 8). Τέλος, ο αριθμός των επαναλήψεων θα πολλαπλασιαστεί με την πολυπλοκότητα της ρουτίνας Vars για να έχουμε το τελικό αποτέλεσμα. Υπενθυμίζουμε το μέτρο Mahler του πολυωνύμου p(x) M = c d (2.1) d max{1, ρ i } (2.2) όπου ρ i, i = 1,..., d οι μιγαδικές ρίζες του p. Για το μέτρο Mahler ισχύει το φράγμα M c 2 0 + c2 1 + c2 d 2τ d + 1 (2.3) Για να φράξουμε το πλήθος των υποδιαιρέσεων C που εκτελεί ο αλγόριθμος χρειαζόμαστε και το παρακάτω Θεώρημα 2.3.1. (Davenport-Mahler-Mignotte) Αν p(x) Z[x] και {a 1,..., a k }, {b 1,..., b k } δυο σύνολα ριζών του, με a i > a i+1, b i > b i+1 και a i > b i τότε ισχύει όπου M το μέτρο Mahler του p(x). ( ) k k 3/d a i b i M d 1 d d /2 1 H bèltisth aută timă epitugqĺnetai me thn akoloujða Habicht kai mporeð na meiwjeð perissìtero an upologisteð mia akoloujða phlðkwn, antð gia ta upìloipa.. 2 duadikì măkoc(bit complexity) rhtoô orðzoume th mègisth timă apì to duadikì măkoc tou arijmhtă kai tou paronomastă tou
Μάθημα 2. Η μέθοδος Sturm 9 Ας θεωρήσουμε τώρα το σύνολο S = {I : υπάρχει ακριβώς μια ρίζα στο I L και ακριβώς μια στο I R }, δηλαδή το S περιέχει τα διαστήματα του δέντρου που έχουν 2 φύλλα(στο παράδειγμα είναι τα I R, I LR, I LLLR ). Επειδή τα φύλλα είναι το πολύ d, έχουμε ότι το πλήθος των στοιχείων του είναι d 2 (2.4) Το θεώρημα (2.3.1) ισχύει για k = και a i, b i οι ρίζες στο I i S. Λογαριθμώντας παίρνουμε log a i b i (d 1) log M + d 2 log d + log d 2 log 3 και λαμβάνοντας υπόψιν από τις (2.3), (2.4) ότι log M = O(τ + log d) και = O(d), είναι τελικά log a i b i = O(dτ + d log d) (2.5) Εχοντας κατά νου όλα τα παραπάνω, μπορούμε να φράξουμε το C ως εξής: C I S h(i) (2.1) = lg I 0 I I S = lg I 0 I S < lg(2b) I S lg I lg(a i b i ) τ I S log(a i b i ) < dτ log a i b i (2.4) (2.5) dτ + dτ + d log d = O B (dτ + d log d) = O B(dτ) Μια παρατήρηση είναι εδώ ότι h C, άρα το φράγμα για την πολυπλοκότητα της Vars είναι O B (d3 τ). Τελικά ο αλγόριθμος έχει συνολική πολυπλοκότητα O B (C d3 τ) = O B (d4 τ 2 ).